<?php

/*
** (c)2012 COMITATO PROVINCIALE DI CATANIA - CROCE ROSSA ITALIANA
*/

class Proprieta {
	public
		$persona, $nome, $valore;
	private
		$db;

	public function __construct(Persona $persona, $nome) {
		global $db;
		$this->db = $db;
		$this->persona = $persona;
		$this->nome = $nome;
		$q = "SELECT valore FROM proprieta
			WHERE persona = '{$persona->id}'
			   AND nome = '$nome'";
		$q = $this->db->query($q);
		if ( $q ) {
			$this->valore = array();
			while ( $r = $this->db->fetch_array($q) ) {
				$this->valore[] = $r[0];
			}
		} else {
			$this->valore = array();
		}
	}

	// Conta quanti valori ha un certa proprietà
	public function num() {
		if ( is_array($this->valore) ) {
			return count($this->valore);
		} elseif ($this->valore) {
			return 1;
		} else {
			return 0;
		}
	}

	// Se usato come stringa
	public function __toString() {
		 if ( $this->num() == 1 ) {
		 	return $this->valore[0];
		 } else {
		 	return ""; // Vuoto o array, non stampa niente
		 }
	}

	// Se chiamato come funzione, ritorna array valori
	public function __invoke() {
		return $this->valore;
	}

	public function salva() {
		$r = true;
		$r &= $this->azzera(true); // Cancella dal database
		foreach ( $this->valore as $val ) {
			$val = $this->db->escape(((string) $val));
			$q = "INSERT INTO proprieta
				(persona, nome, valore)
			      VALUES
			      	('{$this->persona->id}', '{$this->nome}', '$val')";
			$r &= $this->db->query($q);
		}
		return $r;
	}

	public function azzera($preserva_array = false) {
		$q = "DELETE FROM proprieta WHERE
			persona = '{$this->persona->id}'
			AND
			nome = '{$this->nome}'";
		if ( !$preserva_array ) {
			$this->valore = array();
		}
		return $this->db->query($q);
	}

}
